package com.partsoft.dits;

import com.partsoft.dits.message.DataProperty;

/**
 * 数据表集成边界描述符接口
 */
public interface TableDataEdgeDescriptor extends DataEdgeDescriptor, TransformableEdgeDescriptor, Cloneable {

	/**
	 * 数据源名称
	 * @return
	 */
	String getDataSourceName();

	/**
	 * 模式名称
	 */
	String getSchemaName();

	/**
	 * 表名
	 */
	String getTableName();
	
	/**
	 * 返回主键字段
	 * @return
	 */
	DataProperty getKeyColumn();
	
	/**
	 * 是否单一主键
	 * @return
	 */
	boolean isSingleKey();
	
	/**
	 * 是否复合主键（如果是，则表示有多个主键字段）
	 * @return
	 */
	boolean isCompositeKey();

	/**
	 * 获得主键字段列表
	 * @return
	 */
	DataProperty[] getKeyColumns();

	TableDataEdgeDescriptor clone();
	
	/**
	 * 设置主键字段。
	 * @param keyFields 格式如：COLUMN_NAME=SQL_TYPE_INT， 如果有多个主键请以";"进行分隔。
	 */
	void setKeyFields(String keyFields);
	
	/**
	 * 返回这件字段列表, 格式如：COLUMN_NAME=SQL_TYPE_INT， 如果有多个主键请以";"进行分隔。
	 */
	String getKeyFields();
	
	/**
	 * 返回主键字段列表字符串，如果有多个则用";"进行分隔。
	 * @return
	 */
	String getKeyFieldNames();
	
	/**
	 * 是否转换
	 */
	boolean isConversion();
	
	
	/**
	 * 获得边界描述
	 * @return
	 */
	String getDescription();
	
	/**
	 * 获取转换脚本字符串
	 */
	String getTransformScript();
	
}
